Software developers writing applications for non-personal computer (PC) devices, e.g., a handheld electronic device, often prefer to use a PC platform to perform the application development. Use of the PC platform provides the developers with access to software development resources that would not be available on the non-PC device. A common approach for using the PC platform to develop software applications for the non-PC device is to provide a software-based emulator that operates on the PC platform to simulate the hardware and software behavior of the non-PC device. Traditionally, the software-based emulator is defined to simulate a specific non-PC device. Thus, a separate emulator is needed for different models or versions of the non-PC device. Using the emulator, the software developer can investigate how a particular application under development will function on the non-PC device. However, limitations exist with respect to how well the conventional software-based emulator can simulate the behavior of the actual non-PC device. Therefore, a guarantee cannot be provided that the application operating environment on the actual non-PC device will be equivalent to the simulated application operating environment provided by the conventional emulator on the PC.
One limitation associated with the conventional emulator is that the actual non-PC device's operating system may not match the PC's operating system. In this case, the non-PC device's operating system software must be ported to the PC's operating system. Such porting of one operating system to another can be difficult, time consuming, and error-prone. Another limitation of the conventional emulator stems from the fact that the conventional emulator attempts to simulate the hardware and software functionality of the non-PC device as well as the interfacing network functionality associated with the non-PC device. However, limitations exist with respect to how accurately the conventional software-based emulator can simulate the non-PC device hardware functionality and, more particularly, the interfacing network functionality that is not completely within the design envelope of the non-PC device. In some instances it may be impossible to provide within the software-based emulator the same functionality that is available on the non-PC device. For example, if the non-PC device is a cellular phone, the non-PC device can provide access to an actual cellular network, but the conventional software-based emulator operating on the PC cannot provide access to the actual cellular network.
Additionally, features within the application that are either not simulated or poorly simulated by the conventional emulator will need to be debugged following deployment of the application on the non-PC device. In general, applications are often difficult to debug once deployed on the actual non-PC device. Furthermore, the application deployment process on the non-PC device can be tedious and expensive. Thus, it is inefficient for the application developer to frequently deploy the application on the non-PC device for testing at various iterations of the application development cycle. Nevertheless, the application developer often needs to utilize certain features that cannot be accurately simulated by the conventional software-based emulator on the PC. Thus, an uncomfortable balance must be maintained between application debugging difficulty level and the expense of more frequent application deployments to the non-PC device during the application development process using the conventional software-based emulator.